package com.xingchi.tornado.dict.service;

import com.xingchi.tornado.core.enums.OperateTypeEnum;
import com.xingchi.tornado.dict.model.DictMetadata;
import com.xingchi.tornado.dict.model.dto.DictItemDTO;

import java.util.List;
import java.util.Map;

/**
 * 字典数据存储服务
 *
 * @author xingchi
 * @date 2024/5/19 20:40
 */
public interface DictStorageService {

    /**
     * 存储字典数据
     *
     * @param dictMetadataList 字典数据集合
     */
    void storage(List<DictMetadata> dictMetadataList);

    /**
     * 缓存所有字典信息
     */
    void refreshCache();

    /**
     * 获取所有字典缓存
     *
     * @return 字典缓存信息 key: 字典分组 value: 字典项list
     */
    Map<String, List<DictItemDTO>> getDictCache();

    /**
     * 获取指定字典缓存
     *
     * @param group 字典分组
     * @return 字典缓存信息
     */
    List<DictItemDTO> getDictCache(String group);

    /**
     * 字典数据改变处理器
     *
     * @param groupCode 分组code
     * @return  是否处理成功
     */
    boolean dictChangeHandler(String groupCode, OperateTypeEnum operateType);

}
